#============================================================
#	Start End Pos
#============================================================
#  起始和结束位置
#============================================================
# @datetime: 2022-5-14 22:58:35
#============================================================
extends Node


#============================================================
#   自定义
#============================================================
func update_data():
	var _level : TileMap = get_parent()
	# 获取所有门的位置
	var points = _level.get_used_cells_by_id(MapData.TileType.Door)
	if points.size() == 0:
		Logger.error(self, ["Tilemap 中没有 ", MapData.TileType.Door, ' 这个瓷砖'])
		return
		
	# 随机获取一个门的位置
	var start_pos : Vector2 = points[randi() % points.size()]
	# 移除随机获取的位置的值
	points.remove(points.find_last(start_pos))
	
	if points.size() == 0:
		Logger.error(self, [MapData.TileType.Door, ' 瓷砖数量太少！'])
		return
	
	# 查找离它相对较远的位置
	var distance_data: Dictionary = {}
	for p in points:
		distance_data[p] = p.distance_squared_to(start_pos)
	
	var dist_list = distance_data.values()
	dist_list.sort()
	
	# 取 20% 的个数的末尾的值
	var count : int = ceil(dist_list.size() * 0.2)
	var far_points : Dictionary = {}
	for p in distance_data:
		if distance_data[p] in dist_list:
			far_points[p] = distance_data[p]
	# 随机获取其中一个位置
	var rand_point = distance_data.keys()
	rand_point.shuffle()
	var end_pos : Vector2 = rand_point[randi() % rand_point.size()]
	
	MapData.start_pos = _level.map_to_world(start_pos)
	MapData.end_pos = _level.map_to_world(end_pos)
	
	Logger.info(self, [
		'开始位置：', MapData.start_pos, 
		"，结束位置：", MapData.end_pos,
	], "", true)
	

